import { baseUrl, homeUrl } from '@/config/index.js'

export const httpRequest = (options) => {
  // 添加一些默认配置，例如请求的基本URL等
  const defaultOptions = {
    method: 'GET',
    showLoading: true,
    // 其他默认配置...
    header: {},
  }

  // 合并默认配置和传入的配置
  const requestOptions = Object.assign({}, defaultOptions, options)

  if (requestOptions.showLoading) {
    uni.showLoading({
      title: requestOptions.loadingTitle || '数据加载中...',
      mask: true,
    })
  }
  if (uni.getStorageSync('token')) {
    requestOptions.header.appToken = uni.getStorageSync('token')
  }

  return new Promise((resolve, reject) => {
    uni.request({
      ...requestOptions,
      url: baseUrl + options.url,
      success: (res) => {
        // 请求成功处理
        if (res && res.data && res.data.code == 200) {
          resolve(res.data)
        } else {
          let errorMessage = res.data.message || res.data.error || '网络繁忙,请稍后再试'
          if (res.data.code > 20000 && res.data.code < 30000) {
            uni.showToast({
              title: '登录失效，请重新登录',
              duration: 2000,
              icon: 'none',
            })
            uni.removeStorageSync('token')
            uni.removeStorageSync('elderlyInfo')
            uni.reLaunch({
              url: homeUrl,
            })
          } else {
            // uni.hideToast();
            uni.showToast({
              title: errorMessage,
              duration: 2000,
              icon: 'none',
            })
          }

          // 请求失败处理
          reject(res)
        }
      },
      fail: (err) => {
        let errorMessage = err.errMsg
        if (errorMessage == 'request:fail') {
          errorMessage = '网络连接异常'
        }
        uni.showToast({
          title: errorMessage,
          duration: 2000,
          icon: 'none',
        })

        // 请求失败处理
        reject(err)
      },
      complete: () => {
        if (requestOptions.showLoading) {
          uni.hideLoading({ noConflict: true })
        }
      },
    })
  })
}
